Fix unit preference changes for open documents - #189
Conversation
Only update the active document when the selected global unit preference changes. Preserve project units when applying unrelated preferences or disabling IgnoreProjectSchema. Expand Qt coverage to seven scenarios. Red: the unchanged-preference and restore-project-units cases failed against the PR implementation before the fix. Green: both test executables pass after the fix. Validation: pixi run cmake --build build/debug --target UnitSettings_Tests_run QuantitySpinBox_Tests_run --parallel 8 (passed) Validation: pixi run ctest --test-dir build/debug -R "^(UnitSettings|QuantitySpinBox)_Tests_run$" --output-on-failure (2/2 passed)
|
Review: production change does not overlap the performance diff, but test registration conflicts with the new GUI tests. Quick validation: preserve both registrations, build/run UnitSettings_Tests_run and QuantitySpinBox_Tests_run against current main. Exercise an open document with IgnoreProjectSchema on/off and ensure changing unrelated preferences preserves document units. Hold until the conflict is resolved and those native tests pass. |
# Conflicts: # tests/src/Gui/CMakeLists.txt
|
Resolved test registration conflict while preserving DocumentBulkMutation and RenderMeshController performance tests. Focused native validation against the current native FreeCAD libraries:
These are focused native compile/link and GUI preference tests, not a fresh full application build. Auto-merge is subject to refreshed required checks. |
The unit preference change now updates the active document's unit system when project units are not being ignored, while preserving the view-only behavior when "Ignore project unit system" is enabled. A regression test covers changing units with an open document.
Verification
The focused regression test failed against the pre-fix implementation and passes afterward:
Also verified the existing QuantitySpinBox_Tests_run test passes.
Issues
Fixes #182
Before and After Images
No visual changes; screenshots are not applicable.